As computer networks, the Internet, and distributed computing have developed, members of project teams have become increasingly able to work from different physical locations. Tools such as electronic mail, notes conferences, the world wide web (WWW) and remote file transfer provide a first level of communication between team members. At times, however, there is required the ability to enable multiple team members at differing physical locations to simultaneously view and/or interact with any computer program or set of data. All participating team members must be able to provide inputs, and see the results of their own and other team members' inputs in real time. Such functionality is provided in general by software products referred to as "collaborative tools".
Existing collaborative tools often employ a protocol level splitting approach in which windowing protocol messages are captured at each client system and sent to a server system. Such existing systems have significant shortcomings. Specifically, in existing collaboration tools, only a single application program may be shared at one time. Existing collaborative tools also only permit sharing of two dimensional graphics applications between users having two dimensional graphics display devices. Accordingly, existing collaborative tools are incapable of conveniently sharing two and three dimensional graphics applications between users on both two and three dimensional graphics display devices. In addition, existing collaborative tools do not permit sharing of any partial displays of shared applications. Instead, existing systems require a single shared application to be completely displayed to each client.
A further problem is that the amount of information necessary to transmit in order to share bit displays can be prohibitive. For example, a large three dimensional model might have thirty megabytes or more of vector/polygon information which might need to be transmitted prior to viewing a shared image. In a system using a protocol splitter, these vectors might be transmitted using a file which represents approximately five to ten megabytes at the application protocol layer of the communication stack (for example TCP/IP). Because in such existing systems, all these vectors must be sent, there can be a large amount of compute time and wait time spent sending them across the network, with network latency evident on each vector or group of vectors transmitted.
Thus, it is desirable to have a collaborative tool which reduces the amount of information regarding the shared display region that must be transmitted over the network. The new system should sufficiently reduce the amount of information necessary to be transmitted such that multiple application programs may be efficiently shared between users on both two and three dimensional display devices.